package com.zj.leetcode.easy;

/**
 * @program: algorithm
 * @description: 至少是其他数字两倍的最大数
 * 747 largest-number-at-least-twice-of-others
 * //给你一个整数数组 nums ，其中总是存在 唯一的 一个最大整数 。
 * //
 * // 请你找出数组中的最大元素并检查它是否 至少是数组中每个其他数字的两倍 。如果是，则返回 最大元素的下标 ，否则返回 -1 。
 * //
 * //
 * //
 * // 示例 1：
 * //
 * //
 * //输入：nums = [3,6,1,0]
 * //输出：1
 * //解释：6 是最大的整数，对于数组中的其他整数，6 至少是数组中其他元素的两倍。6 的下标是 1 ，所以返回 1 。
 * //
 * //
 * // 示例 2：
 * //
 * //
 * //输入：nums = [1,2,3,4]
 * //输出：-1
 * //解释：4 没有超过 3 的两倍大，所以返回 -1 。
 * //
 * // 示例 3：
 * //
 * //
 * //输入：nums = [1]
 * //输出：0
 * //解释：因为不存在其他数字，所以认为现有数字 1 至少是其他数字的两倍。
 * //
 * //
 * //
 * //
 * // 提示：
 * //
 * //
 * // 1 <= nums.length <= 50
 * // 0 <= nums[i] <= 100
 * // nums 中的最大元素是唯一的
 * //
 * // Related Topics 数组 排序
 * // 👍 163 👎 0
 * @author: Zhang Bo
 * @create: 2022-01-14 17:05
 **/
public class LargestNumberAtLeastTwiceOfOthers {
    public static void main(String[] args) {
//        int[] nums = new int[]{3, 6, 1, 0};
        int[] nums = new int[]{0, 1};
        Solution solution = new LargestNumberAtLeastTwiceOfOthers().new Solution();
        System.out.println(solution.dominantIndex(nums));
    }

    //leetcode submit region begin(Prohibit modification and deletion)
    class Solution {
        public int dominantIndex(int[] nums) {
            if (nums.length == 1) {
                return 0;
            }

            int max = -1;
            int mSub = 0;
            for (int i = 0; i < nums.length; i++) {
                if (nums[i] > max) {
                    mSub = i;
                    max = nums[i];
                }
            }
            for (int i = 0; i < nums.length; i++) {
                if(nums[i] != 0){
                    if(max != nums[i] && max / nums[i] < 2){
                        mSub = -1;
                    }
                }

            }

            return mSub;
        }


        public int dominantIndex02(int[] nums) {
            if (nums.length == 1) {
                return 0;
            }
            int first = -1;
            int second = -1;

            int fSub = 0;

            for (int i = 0; i < nums.length; i++) {
                if (first <= nums[i]) {
                    fSub = i;
                    second = first;
                    first = nums[i];
                } else {
                    if (second <= nums[i]) {
                        second = nums[i];
                    }
                }
            }
            if (second != 0) {
                return first / second >= 2 ? fSub : -1;
            } else {
                return fSub;
            }

        }
    }
//leetcode submit region end(Prohibit modification and deletion)

}
